#ifndef CLIENT_SOCKET_H
#define CLIENT_SOCKET_H
#include <string>
#include <netdb.h>
#include "common_gestor_envios.h"



class Client_socket{
private:
	int fd;
	struct sockaddr_in addr;
	Gestor_envios* gestor;
	
public:
	/* Constructor, le asigna un fd y una direccion que contiene informacion
	 * del puerto e IP del server */
	Client_socket(int port, char* ip);
	/* Constructor por default. */
	Client_socket();
	/* Destructor*/
	~Client_socket();
	/* Devuelve el fd del socket */
	int get_fd();
	/* Devuelve el address del socket */
	struct sockaddr_in get_addr();
	/* Se conecta al servidor lanzando error de ser necesario */
	int conectar();
	/* Envia un mensaje, controlando que llegue completo */
	int enviar(std::string buffer, int tam);
	/* Recibe un mensaje, controlando que llegue completo */
	int recibir(std::string* buffer, int tam);
	/* Cierra la conexion en ambas direcciones */
	void cerrar_conexion();
	/* Cierra el fd correspondiente a al socket */
	void cerrar();
};

	
#endif
